package com.aggregate.pay.pingan.bean;

import com.aggregate.pay.pingan.enums.OrderStatus;
import com.aggregate.pay.pingan.enums.OrderType;
import com.aggregate.pay.pingan.enums.PaymentTag;
import com.aggregate.pay.pingan.jackson.converter.BooleanDeserialize;
import com.aggregate.pay.pingan.jackson.converter.OrderStatusDeserialize;
import com.aggregate.pay.pingan.jackson.converter.OrderStatusSerialize;
import com.aggregate.pay.pingan.jackson.converter.OrderTypeDeserialize;
import com.aggregate.pay.pingan.jackson.converter.OrderTypeSerialize;
import com.aggregate.pay.pingan.jackson.converter.PaymentTagDeserialize;
import com.aggregate.pay.pingan.jackson.converter.PaymentTagSerialize;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

/**
 * 订单列表接口－响应参数－订单信息
 * @author Moyq5
 * @date 2017年7月27日
 */
public class OrderListResultItem {

	/**
	 * 订单号，必填，32
	 */
	@JsonProperty("ord_no")
	private String orderNo;
	
	/**
	 * 订单名称，必填，50
	 */
	@JsonProperty("ord_name")
	private String orderName;
	
	/**
	 * 交易类型，必填，1
	 */
	@JsonSerialize(converter = OrderTypeSerialize.class)
	@JsonDeserialize(converter = OrderTypeDeserialize.class)
	@JsonProperty("ord_type")
	private OrderType orderType;
	
	/**
	 * 下单时间，必填，20
	 */
	@JsonProperty("ord_add_time")
	private String addTime;
	
	/**
	 * 交易成功时间，20
	 */
	@JsonProperty("ord_trade_pay_time")
	private String payTime;
	
	/**
	 * 订单状态，1
	 */
	@JsonSerialize(converter = OrderStatusSerialize.class)
	@JsonDeserialize(converter = OrderStatusDeserialize.class)
	@JsonProperty("ord_status")
	private OrderStatus status;
	
	/**
	 * 商户手续费（分），必填，20
	 */
	@JsonProperty("ord_fee")
	private String fee;
	
	/**
	 * 原始交易金额（分），必填，20
	 */
	@JsonProperty("ord_original_amount")
	private String originalAmount;
	
	/**
	 * 折扣金额（分），必填，20
	 */
	@JsonProperty("ord_discount_amount")
	private String discountAmount;
	
	/**
	 * 实际交易金额（分），必填，20
	 */
	@JsonProperty("ord_trade_amount")
	private String tradeAmount;
	
	/**
	 * 平台分润（分），必填，20
	 */
	@JsonProperty("ord_org_fee")
	private String orgFee;
	
	/**
	 * 机构分润（分），必填，20
	 */
	@JsonProperty("ord_agent_fee")
	private String agentFee;
	
	/**
	 * 商户编号，必填，20
	 */
	@JsonProperty("mct_no")
	private String merchNo;
	
	/**
	 * 商户名称，必填，50
	 */
	@JsonProperty("mct_name")
	private String merchName;
	
	/**
	 * 门店编号，必填，20
	 */
	@JsonProperty("shop_no")
	private String shopNo;
	
	/**
	 * 门店名称，必填，50
	 */
	@JsonProperty("shop_name")
	private String shopName;
	
	/**
	 * 支付方式编号，必填，9
	 */
	@JsonProperty("pmt_id")
	private String paymentId;
	
	/**
	 * 支付方式标签，必填，10
	 */
	@JsonSerialize(converter = PaymentTagSerialize.class)
	@JsonDeserialize(converter = PaymentTagDeserialize.class)
	@JsonProperty("pmt_tag")
	private PaymentTag paymentTag;
	
	/**
	 * 支付方式名称，必填，50
	 */
	@JsonProperty("pmt_name")
	private String paymentName;
	
	/**
	 * 支付方式内部名称，必填，50
	 */
	@JsonProperty("pmt_internal_name")
	private String paymentInternalName;
	
	/**
	 * 机构编号，必填，9
	 */
	@JsonProperty("agent_no")
	private String agentNo;
	
	/**
	 * 机构名称，必填，9
	 */
	@JsonProperty("org_name")
	private String orgName;
	
	/**
	 * 货币代码（CNY,TWD,USD），必填，3
	 */
	@JsonProperty("ord_currency")
	private String currency;
	
	/**
	 * 货币符（￥,$），必填，5
	 */
	@JsonProperty("currency_sign")
	private String currencySign;
	
	/**
	 * 终端号，必填，20
	 */
	@JsonProperty("tml_no")
	private String terminalNo;
	
	/**
	 * 是否信用卡付款（1是，0不是），必填，1
	 */
	@JsonDeserialize(converter = BooleanDeserialize.class)
	@JsonProperty("credit_card")
	private Boolean isCreditCard;
	
	/**
	 * 交易帐号，必填，100
	 */
	@JsonProperty("trade_account")
	private String tradeAccount;
	
	/**
	 * 原始订单号（退款订单的原订单号或者预授权订单的原订单号），必填，32
	 */
	@JsonProperty("original_ord_no")
	private String originalOrderNo;
	
	/**
	 * 清算日期(yyyy-mm-dd)，10
	 */
	@JsonProperty("check_date")
	private String checkDate;
	
	/**
	 * 收银员编号，必填，20
	 */
	@JsonProperty("scr_id")
	private String cashierId;
	
	/**
	 * 收银员姓名，必填，30
	 */
	@JsonProperty("scr_true_name")
	private String cashierName;
	
	/**
	 * 合同主键编号，必填，20
	 */
	@JsonProperty("ctt_id")
	private String contractNo;

	public String getOrderNo() {
		return orderNo;
	}

	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}

	public String getOrderName() {
		return orderName;
	}

	public void setOrderName(String orderName) {
		this.orderName = orderName;
	}

	public OrderType getOrderType() {
		return orderType;
	}

	public void setOrderType(OrderType orderType) {
		this.orderType = orderType;
	}

	public String getAddTime() {
		return addTime;
	}

	public void setAddTime(String addTime) {
		this.addTime = addTime;
	}

	public String getPayTime() {
		return payTime;
	}

	public void setPayTime(String payTime) {
		this.payTime = payTime;
	}

	public OrderStatus getStatus() {
		return status;
	}

	public void setStatus(OrderStatus status) {
		this.status = status;
	}

	public String getFee() {
		return fee;
	}

	public void setFee(String fee) {
		this.fee = fee;
	}

	public String getOriginalAmount() {
		return originalAmount;
	}

	public void setOriginalAmount(String originalAmount) {
		this.originalAmount = originalAmount;
	}

	public String getDiscountAmount() {
		return discountAmount;
	}

	public void setDiscountAmount(String discountAmount) {
		this.discountAmount = discountAmount;
	}

	public String getTradeAmount() {
		return tradeAmount;
	}

	public void setTradeAmount(String tradeAmount) {
		this.tradeAmount = tradeAmount;
	}

	public String getOrgFee() {
		return orgFee;
	}

	public void setOrgFee(String orgFee) {
		this.orgFee = orgFee;
	}

	public String getAgentFee() {
		return agentFee;
	}

	public void setAgentFee(String agentFee) {
		this.agentFee = agentFee;
	}

	public String getMerchNo() {
		return merchNo;
	}

	public void setMerchNo(String merchNo) {
		this.merchNo = merchNo;
	}

	public String getMerchName() {
		return merchName;
	}

	public void setMerchName(String merchName) {
		this.merchName = merchName;
	}

	public String getShopNo() {
		return shopNo;
	}

	public void setShopNo(String shopNo) {
		this.shopNo = shopNo;
	}

	public String getShopName() {
		return shopName;
	}

	public void setShopName(String shopName) {
		this.shopName = shopName;
	}

	public String getPaymentId() {
		return paymentId;
	}

	public void setPaymentId(String paymentId) {
		this.paymentId = paymentId;
	}

	public PaymentTag getPaymentTag() {
		return paymentTag;
	}

	public void setPaymentTag(PaymentTag paymentTag) {
		this.paymentTag = paymentTag;
	}

	public String getPaymentName() {
		return paymentName;
	}

	public void setPaymentName(String paymentName) {
		this.paymentName = paymentName;
	}

	public String getPaymentInternalName() {
		return paymentInternalName;
	}

	public void setPaymentInternalName(String paymentInternalName) {
		this.paymentInternalName = paymentInternalName;
	}

	public String getAgentNo() {
		return agentNo;
	}

	public void setAgentNo(String agentNo) {
		this.agentNo = agentNo;
	}

	public String getOrgName() {
		return orgName;
	}

	public void setOrgName(String orgName) {
		this.orgName = orgName;
	}

	public String getCurrency() {
		return currency;
	}

	public void setCurrency(String currency) {
		this.currency = currency;
	}

	public String getCurrencySign() {
		return currencySign;
	}

	public void setCurrencySign(String currencySign) {
		this.currencySign = currencySign;
	}

	public String getTerminalNo() {
		return terminalNo;
	}

	public void setTerminalNo(String terminalNo) {
		this.terminalNo = terminalNo;
	}

	public Boolean getIsCreditCard() {
		return isCreditCard;
	}

	public void setIsCreditCard(Boolean isCreditCard) {
		this.isCreditCard = isCreditCard;
	}

	public String getTradeAccount() {
		return tradeAccount;
	}

	public void setTradeAccount(String tradeAccount) {
		this.tradeAccount = tradeAccount;
	}

	public String getOriginalOrderNo() {
		return originalOrderNo;
	}

	public void setOriginalOrderNo(String originalOrderNo) {
		this.originalOrderNo = originalOrderNo;
	}

	public String getCheckDate() {
		return checkDate;
	}

	public void setCheckDate(String checkDate) {
		this.checkDate = checkDate;
	}

	public String getCashierId() {
		return cashierId;
	}

	public void setCashierId(String cashierId) {
		this.cashierId = cashierId;
	}

	public String getCashierName() {
		return cashierName;
	}

	public void setCashierName(String cashierName) {
		this.cashierName = cashierName;
	}

	public String getContractNo() {
		return contractNo;
	}

	public void setContractNo(String contractNo) {
		this.contractNo = contractNo;
	}

	@Override
	public String toString() {
		return "OrderListResultItem [orderNo=" + orderNo + ", orderName=" + orderName + ", orderType=" + orderType
				+ ", addTime=" + addTime + ", payTime=" + payTime + ", status=" + status + ", fee=" + fee
				+ ", originalAmount=" + originalAmount + ", discountAmount=" + discountAmount + ", tradeAmount="
				+ tradeAmount + ", orgFee=" + orgFee + ", agentFee=" + agentFee + ", merchNo=" + merchNo
				+ ", merchName=" + merchName + ", shopNo=" + shopNo + ", shopName=" + shopName + ", paymentId="
				+ paymentId + ", paymentTag=" + paymentTag + ", paymentName=" + paymentName + ", paymentInternalName="
				+ paymentInternalName + ", agentNo=" + agentNo + ", orgName=" + orgName + ", currency=" + currency
				+ ", currencySign=" + currencySign + ", terminalNo=" + terminalNo + ", isCreditCard=" + isCreditCard
				+ ", tradeAccount=" + tradeAccount + ", originalOrderNo=" + originalOrderNo + ", checkDate=" + checkDate
				+ ", cashierId=" + cashierId + ", cashierName=" + cashierName + ", contractNo=" + contractNo + "]";
	}
	
}
